﻿using System;
using System.Windows.Forms;

namespace Onshi.POS.Formularios.Recursos
{
    public partial class MonedaDesdeHasta : UserControl
    {
        #region Constructores

        public MonedaDesdeHasta()
        {
            InitializeComponent();
        }

        #endregion

        #region Eventos

        public event CambioEventHandler Cambio;
        public delegate void CambioEventHandler();

        private void MonedaDesdeHasta_Load(Object sender, EventArgs e)
        {
            cboTipo.Items.Add("(Todos)");
            cboTipo.Items.Add("Igual");
            cboTipo.Items.Add("Menor");
            cboTipo.Items.Add("Menor o igual");
            cboTipo.Items.Add("Mayor");
            cboTipo.Items.Add("Mayor o igual");
            cboTipo.Items.Add("Entre");
            cboTipo.SelectedIndex = 0;
        }

        private void cboTipo_SelectedIndexChanged(Object sender, EventArgs e)
        {
            switch (cboTipo.SelectedIndex)
            {
                case (Int32)EnumTipo.TODOS:
                    numValor1.Enabled = false;
                    numValor2.Enabled = false;
                    break;
                case (Int32)EnumTipo.IGUAL:
                case (Int32)EnumTipo.MENOR:
                case (Int32)EnumTipo.MENOR_O_IGUAL:
                case (Int32)EnumTipo.MAYOR:
                case (Int32)EnumTipo.MAYOR_O_IGUAL:
                    numValor1.Enabled = true;
                    numValor2.Enabled = false;
                    break;
                case (Int32)EnumTipo.ENTRE:
                    numValor1.Enabled = true;
                    numValor2.Enabled = true;
                    break;
            }
            if (cboTipo.SelectedIndex != -1)
                if (Cambio != null)
                    Cambio();
        }

        private void numDesde_ValueChanged(Object sender, EventArgs e)
        {
            if (Cambio != null)
                Cambio();
        }

        private void numHasta_ValueChanged(Object sender, EventArgs e)
        {
            if (Cambio != null)
                Cambio();
        }

        #endregion

        #region Propiedades

        public Decimal Desde
        {
            get
            {
                Decimal valor = 0;
                switch (cboTipo.SelectedIndex)
                {
                    case (Int32)EnumTipo.TODOS:
                    case (Int32)EnumTipo.MENOR_O_IGUAL:
                    case (Int32)EnumTipo.MENOR:
                        valor = Decimal.MinValue;
                        break;
                    case (Int32)EnumTipo.IGUAL:
                    case (Int32)EnumTipo.MAYOR_O_IGUAL:
                    case (Int32)EnumTipo.ENTRE:
                        valor = numValor1.Value;
                        break;
                    case (Int32)EnumTipo.MAYOR:
                        valor = numValor1.Value + 0.0001M;
                        break;
                }
                return valor;
            }
        }

        public Decimal Hasta
        {
            get
            {
                Decimal valor = 0;
                switch (cboTipo.SelectedIndex)
                {
                    case (Int32)EnumTipo.TODOS:
                    case (Int32)EnumTipo.MAYOR_O_IGUAL:
                    case (Int32)EnumTipo.MAYOR:
                        valor = Decimal.MaxValue;
                        break;
                    case (Int32)EnumTipo.MENOR:
                        valor = numValor1.Value - 0.0001M;
                        break;
                    case (Int32)EnumTipo.IGUAL:
                    case (Int32)EnumTipo.MENOR_O_IGUAL:
                        valor = numValor1.Value;
                        break;
                    case (Int32)EnumTipo.ENTRE:
                        valor = numValor2.Value;
                        break;
                }
                return valor;
            }
        }

        #endregion

        #region Metodos

        public void Limpiar()
        {
            cboTipo.SelectedIndex = 0;
            numValor1.Value = 0;
            numValor2.Value = 0;
        }

        #endregion

        #region Enumeradores

        private enum EnumTipo
        {
            TODOS = 0,
            IGUAL = 1,
            MENOR = 2,
            MENOR_O_IGUAL = 3,
            MAYOR = 4,
            MAYOR_O_IGUAL = 5,
            ENTRE = 6
        }

        #endregion
    }
}
